package cn.tedu.stringx;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Scanner;

public class StringDemo1 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //2、统计某个字符串中英文大小写字母出现的个数 数字的个数
//        String str = "jk12jklA";
//        int minCount = 0;
//        int maxCount = 0;
//        int numCount = 0;
//        for (int i = 0; i <str.length() ; i++) {
//           char c =  str.charAt(i);
//           if(c>='a'&&c<='z'){
//               //小写的英文字母
//               minCount++;
//           }
//           if(c>='A'&&c<='Z'){
//               //大写写的英文字母
//               maxCount++;
//           }
//           if(c>='0'&&c<='9'){
//                //数字
//               numCount++;
//           }
//        }
//        System.out.println("小写字母有："+minCount+"个");
//        System.out.println("大写字母有："+maxCount+"个");
//        System.out.println("数字有："+numCount+"个");

        //startsWith  endWith
//        String fileName = "StringDemo1.java";
//        //判断str是否以.java结尾
//        boolean res = fileName.endsWith(".java");
//        if(res){
//            System.out.println("这是一个java文件");
//        }
        //判断文件的类型
//        if(fileName.endsWith(".java")){
//            System.out.println("这是一个java文件");
//        }else if(fileName.endsWith(".txt")){
//            System.out.println("这是一个文本文档");
//        }else if(fileName.endsWith(".png")||fileName.endsWith(".gif")){
//            System.out.println("这是一个图片文件");
//        }

//        String fileName = "ObjectDemo1.java";
//        if (fileName.startsWith("String")){
//            System.out.println("和字符串相关的");
//        }else if(fileName.startsWith("Object")){
//            System.out.println("和Object类相关的");
//        }
        //startsWith指定开始的索引位置
//        String fileName = "log-easymall-2020.10.26.log";
//        if(fileName.startsWith("easymall",3)){
//            System.out.println("这是easymall项目的日志文件");
//        }

        //校验验证码是否正确 --为了防止通过程序对项目进行恶意攻击
//        String str = "a7R5";
//        System.out.println("验证码："+str);
//        System.out.println("请输入验证码：");
//        Scanner sc = new Scanner(System.in);
//        String valistr = sc.next();
//        sc.close();
        //str valistr是否内容一致
//        if(str.equals(valistr)){
////            System.out.println("验证码正确");
//        }
        //验证码的比较要忽略大小写
//        if(str.equalsIgnoreCase(valistr)){
//            System.out.println("验证码正确");
//        }

        //getBytes
//        String str = "abc";//占用三个字节来进行存储
//        byte[] bs =   str.getBytes();
//        System.out.println(bs.length);//3  表示abc底层真正存储时占用的字节个数
//        for (int i = 0; i <bs.length ; i++) {
//            System.out.println(bs[i]);
//        }
        //中文汉字
//        String str = "中";//[-28,-72,-83]
//        byte[] bs =   str.getBytes();
//        System.out.println(bs.length);//3 UTF-8中中文汉字占用三个字节
//        for (int i = 0; i <bs.length ; i++) {
//            System.out.println(bs[i]);
//        }
        //图片 视频 音频

        //指定用GBK来转换
//        String str = "中";//GBK 占用两个字节来存储 [-42,-48]
//        byte[] bs = str.getBytes("GBK");
//        System.out.println(bs.length);//2
//        for (int i = 0; i <bs.length ; i++) {
//            System.out.println(bs[i]);
//        }

        //将字节数组构建为字符串
//        byte[] bs = {-28,-72,-83};
//        System.out.println(bs);
//        byte[] bs = {-42,-48};
//        String str = new String(bs);//UTF-8
//        String str = new String(bs,"GBk");//GBK
//        System.out.println(str);

//        String str = "中a";
////        System.out.println(str.getBytes().length);//4
//        System.out.println(Arrays.toString(str.getBytes()));// -28, -72, -83, 97

//        byte[] bs = {-28, -72, -83, 97};
//        new String(bs);

        //getChars
//        String str = "hello";
//        char[] cs = new char[10];
//        //将"hello"的内容复制到cs数组中
//        str.getChars(0,str.length(),cs,0);
//        System.out.println(cs);

        //indexOf  lastIndexOf -- 字符
//        String str = "start abcdefabc end";
//        //查询c出现的索引--第一次
//        System.out.println(str.indexOf('c'));//8
//        //查询c出现的索引--最后一次
//        System.out.println(str.lastIndexOf('c'));//14
//        //指定位置开始查询 -- 第一次
//        System.out.println(str.indexOf('a',6));
//        //指定位置开始查询 -- 最后一次
//        System.out.println(str.lastIndexOf('e',14));
//        System.out.println(str.indexOf("abc"));//6
//        System.out.println(str.lastIndexOf("abc"));

        //获取指定字符串在当前字符串中出现的所有下标
        String str = "zhao hao wang hao zhao liu bai zhao";
        String findStr = "zhao";
        int index = str.indexOf(findStr);//index=0
        while(index!=-1){
           //先输出查找到的下标
            System.out.println(index);
            //进行下一次查询 指定起始位置
            index = index + 1;//不会漏掉元素
//            index = index + findStr.length();//提高查找效率 但是某些场景下 会漏掉元素
            index = str.indexOf(findStr,index);
        }

    }
}
